<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>


<script>
  // 1. 回顾内容 + 整理

  // 2. 数组方法都去记住
  // 方法名(听写)，作用，是否改变原数组，返回值

  /*
    3. 
    [
      [1, 2, 3, 4, 5],
      [6, 7, 8, 9, 10],
      [11, 12, 13, 14, 15],
      [16, 17, 18, 19, 20],
      [21, 22, 23, 24, 25]
    ]

    [1,6,7,11,12,13,17,17,18,19,21,22,23,24,25]
  
  */
  function fn(arr) {
    // return [1,6,7,11,12,13,17,17,18,19,21,22,23,24,25]

    if (!Array.isArray(arr)) {
      return;
    }

    // 1. for循环
    // var newArr = [];
    // for (var i = 0; i < arr.length; i++) {
    //   for (var j = 0; j < arr[i].length; j++) {
    //     if (j <= i) {
    //       newArr.push(arr[i][j]);
    //     }
    //   }
    // }
    // return newArr;


    // 2. forEach遍历
    // var newArr = [];
    // arr.forEach(function(item, i) {
    //   item.forEach(function(value, j) {
    //     if (j <= i) {
    //       newArr.push(arr[i][j]);
    //     }
    //   })
    // });
    // return newArr;


    // 3. filter
    // var newArr = [];
    // arr.forEach(function(item, i) {
    //   newArr = newArr.concat(item.filter(function(value, j) {
    //     return j <= i
    //   }))
    //   // [1] [6,7] [11,12,13]
    // });
    // return newArr;


    // 4. splice
    // var newArr = [];
    // arr.forEach(function(item, i) {
    //   newArr = newArr.concat(item.splice(0, i + 1))
    // })
    // return newArr;


    // 5. reduce
    return arr.reduce(function(prev, item, i) {
      return  prev = prev.concat(item.splice(0, i + 1))
    }, [])
  }
  console.log(fn([
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10],
    [11, 12, 13, 14, 15],
    [16, 17, 18, 19, 20],
    [21, 22, 23, 24, 25]
  ]))



  // 4. 编写函数map(arr) 把数组中的每一位数字都增加30%，并返回一个新数组
  function map(arr) {
    if (!Array.isArray(arr)) return;
    return arr.map(function(item) {
      return item * 1.3
    })
  }
  console.log(map([10, 20, 30, 40]))





  // 5. 编写函数has(arr , 60) 判断数组中是否存在60这个元素，返回布尔类型
  function has(arr, value) {
    if (!Array.isArray(arr)) return;
    return arr.includes(value)
  }
  has([1,2,3], 3)





  // 6. 编写函数norepeat(arr) 将数组的重复元素去掉，并返回新的数组
  var arr = [1, 1, 2, 3, 4, 4, 2, 1, 3, 5]

  function norepeat() {
    // code in here ...
    return [...new Set(arr)]
  }

  console.log(norepeat(arr)) // [1, 2, 3, 4, 5]
</script>